home *** CD-ROM | disk | FTP | other *** search
- Path: venus.roc.csci.csc.com!pccom9-156
- From: tottinge@csci.csc.com (Tim Ottinger)
- Newsgroups: comp.lang.c++,comp.lang.eiffel,comp.lang.c,comp.object,comp.software-eng
- Subject: Re: Beware of "C" Hackers -- A rebuttal to Bertrand Meyer
- Date: Sat, 16 Mar 96 18:00:11 GMT
- Organization: CSC CIS - TRIS DIVISION
- Message-ID: <4if2ri$ao6@venus.roc.csci.csc.com>
- References: <1995Jul3.034108.4193@rcmcon.com> <RMARTIN.96Mar13110714@rcm.oma.com> <4i7lup$50t@news1.mnsinc.com> <bksDo8KDp.260@netcom.com> <4i8gkrINNn8o@keats.ugrad.cs.ubc.ca>
- NNTP-Posting-Host: pccom9-156.csci.csc.com
- X-Newsreader: News Xpress Version 1.0 Beta #3
-
- ETHICS/MORALITY/PURPOSE stuff -- You can skip this
- ---------------------------------------------------------------------------
- I'd been mostly quiet, but I think that we've hit the wrong nail squarely on
- the head in this discussion. Unfortunately, someone very well respected (by
- me as well) felt the need to join the language wars, and that lent a bit of
- respectibility to it that is inappropriate.
-
- I'm learning (due to a good friend) to stop bashing 4GLs. Weall can learn to
- use the grammars we like, and stop bashing the ones which are more popular.
- After all, I've not yet seen any PL/1-bashing articles here, nor Prolog haters
- uniting. Only bashing of the most popular languages.
-
- Hey, the most popular (languages, software, books, movies) are seldom the
- best. They're just the most popular. They make bigger box office, and last
- longer, and affect the future more than the less popular ones.
-
- It don't make them right, just makes them important.
- ---------------------------------------------------------------------------
-
- I've got three points (rather than just rambling on) which I think summarize
- what's really going on here.
-
-
- **************************************************************************
- Underdesigned code rots quickly.
-
- Writing underdesigned code is what most of this group calls "hacking code",
- and it's what I call "hacking code" also. It's part of an expediency ethic
- that a lot of employers not only have, but insist upon.
-
- Underdesigned code is hard to maintain (no matter how many comments you put in
- it) and turns to mush over the first, oh, five to ten releases. Then you toss
- it and start over. A lot of money is wasted, but you still learn from it and
- grow wiser for next time.
-
- WRT C:
-
- An awful lot of code is written in C, and so a lot of awful code is written in
- C. Because C is very popular, there's a lot of quackery. People with a
- one-month night-school familiarity with it advertise and get jobs as C
- experts. And more bad code results.
-
- C is just a popular syntax. It suffers more from popularity than syntax. Face
- it, anyone can learn any language if they care to. It's not secret or
- special. And you can do things in COBOL that are amazing (that topic for a
- later time).
-
-
- **************************************************************************
- WELL DESIGNED CODE IS SLOWER TO MARKET
-
- This is why a lot of companies are afraid of OO in general. But well-designed
- code doesn't rot nearly as fast as "hacked-together" code, so it has a much
- better long-term viability. It tends to accept changes more gracefully.
-
- If you are going to go home to skandahoovia, Ohio as soon as the project is
- done, maybe you don't care about long-term viability. If you're producing a
- product you'll release a few hundred times before you retire, you care an
- awful lot about it. Most people fall somewhere in-between.
-
- WRT C:
- you can do really cool stuff, in terms of clarity, usefulness, and
- reusability (I've seen it done). But like building good classes, you have to
- stop and think it out well first.
-
- **************************************************************************
- OVERDESIGNED CODE RARELY MAKES IT TO THE MARKET AT ALL
-
- This is the problem with OO newbies (I was one, and almost failed this way,
- too). It's called Analysis-Paralysis. It's what happens when you think you
- have to know it all before you start.
-
- Try this on for size:
- FLEXIBILITY + UTILITY = COMPLEXITY
-
- If you design code well, it is more complex. It has greater utility and
- flexibility than code written precisely to a spec. It takes longer to
- conceive, and has a much longer lifespan.
-
- WRT C++:
-
- A very flexibile and broad language takes longer to learn. C++ offers more
- choices than any other language I've ever learned (but I've only learned a
- few). I know that a lot of people don't think that some of those options
- should be offered (non-oo, a goto keyword, etc), but you aren't forced to use
- them.
-
- If you think that you have to master C++ before you start, you're not only
- fooling yourself, you're wasting your bosses' money.
-
- You can't be an expert until you've made all of the mistakes. But you can
- produce working software along the way.
-
- You can, then, fail to follow the incremental and iterative model, and try to
- do it all at once. I'll read about you on the front cover of Computer World.
- It will be "ANOTHER OO PROJECT BITES THE DUST -- USE COBOL JUST LIKE THE OLD
- DAYS".
-
-
-
- Finally this:
-
- This is why so much bad code is successful: it actually made it to the market,
- and the marketing and sales guys earned it an installed base. The best, or
- best-designed, products are seldom the leaders. It has much more to do with
- timing and marketing.
-
- Certainly, at some point, too many choices are overwhelming to any individual.
- That's why a lot of people still prefer to use proprietary software on
- proprietary architectures. At least it all comes in a simple bundle and they
- don't have to spend time researching their options. This isn't stupid and
- wrong -- it's a choice.
-
- Likewise, my use of C++ doesn't affect you at all. You can use Modula-3 or
- Smalltalk. There's plenty of work for all of us. Some of the people I
- respect very much use COBOL still, and they have as much backlog as I do.
-
- "Can't we all just be friends" :-)
-
-
- ******************************************************************************
- * Tim Ottinger, Sr Tech tottinge@csci.csc.com *
- * CSC Communications Industry Services 217-351-8508x2420 *
- * TRIS Division -- Cellular Billing and Support Fax 217-351-2640 *
- ******************************************************************************
- * Requirements have always been the least stable part of any project I have *
- * worked upon. -- Robert Martin via Usenet 12/02/95 *
- ******************************************************************************
-